# encoding: utf-8
import datetime
import fileAction
import fundAction
import dataImage
import threading

# 计数器 用来记录这是第几次获取数据，连续获取N次更新一次折线图
createImageFlag = 0
# 目标次数当获取一下次数的数据后，更新一次折线图
createImageNum = 3
# 用来存基金代码
fundCode = ''


# 这个方法被begin文件使用,会把code也就是基金代码保存在fundCode里
def setFundCode(code):
    # 声明为全局变量(也叫公共变量),这样别的方法(fundCode)才可以使用
    global fundCode
    # 等于号的意思是赋予,把code对应的值给fundCode,==才是数学意义上的等于
    fundCode = code


# 定时方法 每隔一段时间根据fundCode获取一次该基金的最新数据
def fundwork():
    # 用了global才代表我要使用公共(上面)的createImageFlag,createImageNum
    global createImageFlag
    global createImageNum
    # 根据fundCode基金代码从fundAction文件的getFundJsonByTTJJ方法获取这只基金现在的数据具体实现看fundAction
    fundJson = fundAction.getFundJsonByTTJJ(fundCode)
    # 控制台输出一下数据
    # gsz,gszzl,gztime这些字段名字是天天基金网规定的,他这么给,我这么取
    print('当前估算净值:' + fundJson.get('gsz'))
    print('当前估算涨幅:' + fundJson.get('gszzl') + '%')
    print('数据源估算时间:' + fundJson.get('gztime'))
    print('当前时间:' + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + '\n')
    # 将数据fundJson存储在txt文本中并且声明这是属于fundCode的数据
    fileAction.writeTxt(fundJson, fundCode)
    # 计数器+1次
    createImageFlag = createImageFlag + 1
    # 如果计数器达到我的额定次数
    if createImageFlag == createImageNum:
        # 计数器归零
        createImageFlag = 0
        # 并且开始创建/覆盖这个只基金的图表
        dataImage.createDataImage(fundCode)

    # 10代表10秒，天天基金两分钟更新一次,10秒频率过高只是方便测试
    t = threading.Timer(60, fundwork)
    t.start()
